package version_3;

/**
 * 这个文件提供了一些判断胜负或者其的它方法，基于版本1，并删除了相对应的命令行井字棋的代码
 * 请运行另外一个文件
 */
public class Main {
    /**
     * 判断当前位置是否存在棋子
     */
    public static boolean isFilled(int[][] map, int row, int column) {
        if (row == -1) {
            return true;
        }
        return map[row][column] != 0;
    }

    /**
     * 通过步数判断是否平局
     * 第九步仍未决出胜负即为平局
     */
    public static boolean stepOver(int step) {
        return step == 9;
    }

    /**
     * 判断胜负的方法
     * 1为X赢
     * 2为O赢
     * 0为未决出胜负
     */
    public static int ifWin(int[][] map) {
        int sum = 0;

        //按行判断
        for (int i = 0; i < 3; i++) {
            sum = 0;
            for (int j = 0; j < 3; j++) {
                sum += map[i][j];
                if (sum == 9) {
                    return 1;
                }
                if (sum == 15) {
                    return 2;
                }
            }
        }

        //按列判断
        for (int i = 0; i < 3; i++) {
            sum = 0;
            for (int j = 0; j < 3; j++) {
                sum += map[j][i];
                if (sum == 9) {
                    return 1;
                }
                if (sum == 15) {
                    return 2;
                }
            }
        }

        //按对角线判断
        if (map[0][0] + map[1][1] + map[2][2] == 9) {
            return 1;
        }
        if (map[0][0] + map[1][1] + map[2][2] == 15) {
            return 2;
        }
        if (map[0][2] + map[1][1] + map[2][0] == 9) {
            return 1;
        }
        if (map[0][2] + map[1][1] + map[2][0] == 15) {
            return 2;
        }
        return 0;
    }
}